package com.tyut.service;

import com.tyut.domain.MusicDocument;
import com.tyut.domain.TagDocument;
import com.tyut.domain.UserDocument;
import com.tyut.domain.dto.SearchRequest;
import com.tyut.domain.vo.SearchResult;

/**
 * 搜索服务接口
 */
public interface SearchService {

    /**
     * 搜索音乐
     *
     * @param request 搜索请求
     * @return 搜索结果
     */
    SearchResult<MusicDocument> searchMusic(SearchRequest request);

    /**
     * 搜索用户
     *
     * @param request 搜索请求
     * @return 搜索结果
     */
    SearchResult<UserDocument> searchUser(SearchRequest request);

    /**
     * 搜索标签
     *
     * @param request 搜索请求
     * @return 搜索结果
     */
    SearchResult<TagDocument> searchTag(SearchRequest request);

    /**
     * 索引音乐文档
     *
     * @param document 音乐文档
     * @return 是否成功
     */
    boolean indexMusic(MusicDocument document);

    /**
     * 索引用户文档
     *
     * @param document 用户文档
     * @return 是否成功
     */
    boolean indexUser(UserDocument document);

    /**
     * 索引标签文档
     *
     * @param document 标签文档
     * @return 是否成功
     */
    boolean indexTag(TagDocument document);

    /**
     * 删除音乐文档
     *
     * @param id 音乐ID
     * @return 是否成功
     */
    boolean deleteMusic(String id);

    /**
     * 删除用户文档
     *
     * @param id 用户ID
     * @return 是否成功
     */
    boolean deleteUser(Long id);

    /**
     * 删除标签文档
     *
     * @param id 标签ID
     * @return 是否成功
     */
    boolean deleteTag(String id);
} 